
紀錄用函式 function 寫一個計算題,透過練習題與自己寫幾次程式碼,就比較了解 var、function、return 彼此的關係。
EX. 買衣服的購物後台如果要買很多品項,甚至還要點選不同尺寸的數量,還有不同的加工,項目一多,如果還要逐步撰寫程式碼,那程式碼就會很長一串,使用 function + return 就可以達到只要功能俱足,利用 return 帶回關鍵數值,就可以快速得到結果。
主要練習內容:會使用到 JS 的 textContent 屬性,input 表格裡面的數值是用 id 來控制,並對應到 JS 的內容,到時候就可以因為輸入數字後,點擊 Button 後,就能計算出結果!這次要寫的畫面如下:

 <h1>JavaScript 透過表單獲取數值練習</h1>
  <p>漢堡 120 元</p>
  <p>可樂 60 元</p>
  <p>我要 <input type="text" id="hamNumId"> 個漢堡 + <input type="text" id="cokeNumId"> 杯可樂</p>
<button type="button" id="countId" value="計算">計算</button>
 
<p>總共是 <strong class="total" id="totalId"></strong> 元</p>
  <script src="js/all.js"></script>
因為今天最終的目的,是要透過 button 按鈕來取得計算數值,所以一開始的程式碼式這一段:
document.getElementById('countId').onclick = function () {
}
說明:透過 getElementById 取得 button 的 id,並且給他一個 onclick 點擊事件,這個事件的功能會包含以下內容 (將其功能的內容寫於其中)。
document.getElementById('countId').onclick = function () {
  //button 使用getElementById (後面不用加點,直接套 id 名稱) 加上一個 onclick 事件,並執行 function 內容
  var hamNum = document.getElementById('hamNumId').value;
  var cokeNum = document.getElementById('cokeNumId').value;
  //命名變數為抓取 input 裡面的數值,所以要用 value
  alert(hamNum);
  alert(cokeNum);
  //使用 alert 做驗證
}
input 輸入數值後,再利用 id 抓取其數值,按下 button 時會產生 onclick 事件,這邊先使用 alert。id 中的在 input 所得到的值(value)。input 輸入的數值。在進行計算前,要先確認 input 的值是 string 還是 number,如果要透過 JavaScript 做計算,要先確認輸入的值要是 number,才能正常運算,可以使用下面的方式,確認類型。
例如現在要確認 hamNum 裡面的值是什麼,就可以這樣確認:
var hamNum = document.getElementById('hamNumId').value;
console.log(typeof(hamNum)) //結果會是 string
這時如果在 input 輸入 3,console.log 的結果就會變成兩個字串相加,"3" + "3"= 33,但有趣的是,倘若是用相乘,結果竟然會是 "3" * "3" = 9
在確認類行為 string 後,要先轉換 文字變成數字 (string to number) 的屬性,就可以透過函式來加總。程式碼如下:
var hamNum = parseInt(document.getElementById('hamNumId').value)
將要在 id 所得到的值用 parseInt 語法轉換成數字。
這時候再把品項的金額用變數做宣告,也將要得到的結果寫在最下方,程式碼如下:
document.getElementById('countId').onclick = function () {
    //button 使用getElementById (後面不用加點,直接套 id 名稱) 加上一個 onclick 事件,並執行 function 內容
    var hamPrice = 50;
    var cokePrice = 20;
    //定義變數的內容
    var hamNum = parseInt(document.getElementById('hamNumId').value) * hamPrice;
    var cokeNum = parseInt(document.getElementById('cokeNumId').value) * cokePrice;
    //命名變數為抓取 input 裡面的數值
    //將要在 id 所得到的值用 parseInt 語法轉換成數字。
    document.getElementById('totalId').textContent = hamNum + cokeNum
    //最終結算的結果
可以透過 Codepen 玩玩看! https://codepen.io/hnzxewqw/pen/Yzzbgzm
透過 return 回傳的屬性,可以運算比較複雜的內容,當商品或是後台採購品項較多時,就不用一直打程式碼,前提是參數內的數值要同一個才可以,比如下方例子:
function count(price) {
  return addTax(price * 0.8);
}
//商品價格要打八折時
function count(price) {
  return addTax * 1.05;
}
//當商品要開立發票時
console.log(count(500);)
//return 會把 count 的參數 500,套回 function 中,會得到下面結果
// 500 * 0.8
// 500 * 1.05
這次學習到 JavaScript 新的特性,結合之前所學的,透過 function 建立自己要的功能,在使用不同的語法整理取得自己要的函式,截至目前為止,JS 對我來說是很細緻的給予網頁呈現我想要的行為,並且這個行為會讓使用者更方便,也清楚明瞭好操作!JS 的語法相對直覺,掌握住一個指令一個動作,不要在 function 建立太複雜的內容。